package cn.biplam.front.html;

import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.front.html.base.HtmlWindow;

/**
 * Form
 * @author 	WangSong 2009-4-10 上午09:38:07
 * @version 1.0
 */
public class HtmlForm extends HtmlWindow {
	
	private String target;
	private Form_Type type=Form_Type.Default;
	
	public enum Form_Type{
		/** 参数传输*/
		Default("application/x-www-form-urlencoded"),
		/** 数据传输*/
		MultiData("multipart/form-data");
		private String value;
		private Form_Type(String value){this.value=value;}
		public String toString() {return value;}
	}

	/**构造方法	无参构造
	 */
	public HtmlForm(){
	}

	/**构造方法		传入对象的页面ID初始化
	 * @param ID	页面ID
	 */
	public HtmlForm(String ID){
		super(ID);
	}

	/**构造方法 传入对象的页面ID和CSSID初始化
	 * @param ID
	 * @param cssID
	 */
	public HtmlForm(String ID,String cssID){
		super(ID,cssID);
	}
	
	/**
	 * 设置From的类型 参数提交/数据传输
	 * @param type
	 */
	public void setType(Form_Type type){
		this.type=type;
	}

	/**返回实现类自定义的位于对象起始和结束标签内的 HTML
	 * @param sb
	 * @throws ErrorMessage
	 */
	protected void _getContent(StringBuilder sb) throws ErrorMessage {
	}

	/**复制对象
	 * @return 复制好的新HtmlWindow对象
	 * @throws ErrorMessage
	 */
	public HtmlWindow copy() throws ErrorMessage {
		HtmlForm form=new HtmlForm(this.getID(),this.getCssID());
		form.target=this.target;
		super._copy(form);
		return form;
	}
	
	/**
	 * 获取对象及其内容的 HTML 形式(不包含客户端绑定脚本)
	 * @param sb
	 * @throws ErrorMessage
	 */
	public void getHtml(StringBuilder sb) throws ErrorMessage {
		sb.append("<FORM");
		if(this.target!=null){
			sb.append(" action=");
			sb.append(this.target);
		}
		switch(this.type){
		case MultiData:
			sb.append(" METHOD='POST' ENCTYPE='multipart/form-data' ");
			break;
		default:
			sb.append(" ");
		}
		super.writeTagSetting(sb);
		sb.append(">");
		this.getContent(sb);
		sb.append("</FORM>\n");
	}
	
	/**
	 * 返回Form的Target页面地址
	 * @return	Form的Target页面地址
	 */
	public String getTarget() {
		return target;
	}

	/**
	 * 设置Form的Target页面地址
	 * @param target页面地址
	 */
	public void setTarget(String target) {
		this.target = target;
	}

}
